Patch for OpenBoard v. 1.6.0a3 by Roberto Puzzanghera roberto.puzzanghera at sagredo.eu
based on this patch http://webdiis.unizar.es/~spd/openboard/index.html.en

OpenBoard runs in fullscreen mode. This seems to prevent the possibility to be recognized
by Google meet as an application to share. This patch gets OpenBoard to optionally run in
a window and solves the issue.

With this patch OB runs in fullscreen mode by default. To run it in a window simply
adjust this option to true in the config file:

RunInWindow=true

On linux the location of the config file is /opt/openboard/etc/OpenBoard.config. A user
can override this file acting in local config file ~/.local/share/OpenBoard/OpenBoardUser.config

=============================================================================================

diff -ruN OpenBoard-1.6.0a3-original/OpenBoard.pro OpenBoard-1.6.0a3/OpenBoard.pro
--- OpenBoard-1.6.0a3-original/OpenBoard.pro	2020-05-22 18:40:49.000000000 +0200
+++ OpenBoard-1.6.0a3/OpenBoard.pro	2020-10-24 10:58:50.421254271 +0200
@@ -442,6 +442,10 @@
     QMAKE_CFLAGS += -fopenmp
     QMAKE_CXXFLAGS += -fopenmp
     QMAKE_LFLAGS += -fopenmp
+# RunInWindow patch
+    # Necessary for CentOS/RHEL and won't harm in other distributions
+    INCLUDEPATH += /usr/include/ffmpeg
+# end patch
     UB_LIBRARY.path = $$DESTDIR
     UB_I18N.path = $$DESTDIR/i18n
     UB_ETC.path = $$DESTDIR
diff -ruN OpenBoard-1.6.0a3-original/resources/etc/OpenBoard.config OpenBoard-1.6.0a3/resources/etc/OpenBoard.config
--- OpenBoard-1.6.0a3-original/resources/etc/OpenBoard.config	2020-05-22 18:40:49.000000000 +0200
+++ OpenBoard-1.6.0a3/resources/etc/OpenBoard.config	2020-10-24 10:59:50.005263852 +0200
@@ -14,6 +14,7 @@
 PageCacheSize=20
 PreferredLanguage=fr_CH
 ProductWebAddress=http://www.openboard.ch
+RunInWindow=false
 SoftwareUpdateURL=http://www.openboard.ch/update.json
 StartMode=
 SwapControlAndDisplayScreens=false
diff -ruN OpenBoard-1.6.0a3-original/src/core/UBApplication.cpp OpenBoard-1.6.0a3/src/core/UBApplication.cpp
--- OpenBoard-1.6.0a3-original/src/core/UBApplication.cpp	2020-05-22 18:40:49.000000000 +0200
+++ OpenBoard-1.6.0a3/src/core/UBApplication.cpp	2020-10-24 11:03:09.881941449 +0200
@@ -277,8 +277,21 @@
     gs->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true);
     gs->setAttribute(QWebSettings::DnsPrefetchEnabled, true);
 
+    /* RunInWindow patch */
+    if (UBSettings::settings()->appRunInWindow->get().toBool()) {
+       mainWindow = new UBMainWindow(0,
+               Qt::Window |
+               Qt::WindowCloseButtonHint |
+               Qt::WindowMinimizeButtonHint |
+               Qt::WindowMaximizeButtonHint |
+               Qt::WindowShadeButtonHint
+       ); // deleted by application destructor
+    } else {
+       mainWindow = new UBMainWindow(0, Qt::FramelessWindowHint); // deleted by application destructor
+    }
+    /* mainWindow = new UBMainWindow(0, Qt::FramelessWindowHint); // deleted by application destructor */
+    /* end patch */
 
-    mainWindow = new UBMainWindow(0, Qt::FramelessWindowHint); // deleted by application destructor
     mainWindow->setAttribute(Qt::WA_NativeWindow, true);
 
     mainWindow->actionCopy->setShortcuts(QKeySequence::Copy);
diff -ruN OpenBoard-1.6.0a3-original/src/core/UBSettings.cpp OpenBoard-1.6.0a3/src/core/UBSettings.cpp
--- OpenBoard-1.6.0a3-original/src/core/UBSettings.cpp	2020-05-22 18:40:49.000000000 +0200
+++ OpenBoard-1.6.0a3/src/core/UBSettings.cpp	2020-10-24 11:02:43.074387051 +0200
@@ -265,6 +265,9 @@
     appLookForOpenSankoreInstall = new UBSetting(this, "App", "LookForOpenSankoreInstall", true);
 
     appStartMode = new UBSetting(this, "App", "StartMode", "");
+    /* RunInWindow patch */
+    appRunInWindow = new UBSetting(this, "App", "RunInWindow", false);
+    /* end patch */
 
     featureSliderPosition = new UBSetting(this, "Board", "FeatureSliderPosition", 40);
 
diff -ruN OpenBoard-1.6.0a3-original/src/core/UBSettings.h OpenBoard-1.6.0a3/src/core/UBSettings.h
--- OpenBoard-1.6.0a3-original/src/core/UBSettings.h	2020-05-22 18:40:49.000000000 +0200
+++ OpenBoard-1.6.0a3/src/core/UBSettings.h	2020-10-24 11:06:13.206894166 +0200
@@ -260,7 +260,9 @@
         UBSetting* appHideSwapDisplayScreens;
         UBSetting* appToolBarOrientationVertical;
         UBSetting* appPreferredLanguage;
-
+	/* RunInWindow patch */
+	UBSetting* appRunInWindow;
+	/* end patch */
         UBSetting* appIsInSoftwareUpdateProcess;
 
         UBSetting* appLastSessionDocumentUUID;
diff -ruN OpenBoard-1.6.0a3-original/src/frameworks/UBPlatformUtils_linux.cpp OpenBoard-1.6.0a3/src/frameworks/UBPlatformUtils_linux.cpp
--- OpenBoard-1.6.0a3-original/src/frameworks/UBPlatformUtils_linux.cpp	2020-05-22 18:40:49.000000000 +0200
+++ OpenBoard-1.6.0a3/src/frameworks/UBPlatformUtils_linux.cpp	2020-10-24 11:00:43.708371185 +0200
@@ -36,7 +36,9 @@
 #include <X11/keysym.h>
 
 #include "frameworks/UBFileSystemUtils.h"
-
+/* RunInWindow patch */
+#include "core/UBSettings.h"
+/* end patch */
 
 void UBPlatformUtils::init()
 {
@@ -439,7 +441,14 @@
 
 void UBPlatformUtils::showFullScreen(QWidget *pWidget)
 {
-    pWidget->showFullScreen();
+    /* RunInWindow patch */
+    /* pWidget->showFullScreen(); */
+    if (UBSettings::settings()->appRunInWindow->get().toBool()) {
+       pWidget->showNormal();
+    } else {
+       pWidget->showFullScreen();
+    }
+    /* end patch */
 }
 
 void UBPlatformUtils::showOSK(bool show)
diff -ruN OpenBoard-1.6.0a3-original/src/frameworks/UBPlatformUtils_win.cpp OpenBoard-1.6.0a3/src/frameworks/UBPlatformUtils_win.cpp
--- OpenBoard-1.6.0a3-original/src/frameworks/UBPlatformUtils_win.cpp	2020-05-22 18:40:49.000000000 +0200
+++ OpenBoard-1.6.0a3/src/frameworks/UBPlatformUtils_win.cpp	2020-10-24 11:01:26.170665369 +0200
@@ -36,6 +36,9 @@
 
 #include "frameworks/UBFileSystemUtils.h"
 #include "core/memcheck.h"
+/* RunInWindow patch */
+#include "core/UBSettings.h"
+/* end patch */
 
 void UBPlatformUtils::init()
 {
@@ -436,7 +439,14 @@
 
 void UBPlatformUtils::showFullScreen(QWidget *pWidget)
 {
-    pWidget->showFullScreen();
+    /* RunInWindow patch */
+    /* pWidget->showFullScreen(); */
+    if (UBSettings::settings()->appRunInWindow->get().toBool()) {
+       pWidget->showNormal();
+    } else {
+       pWidget->showFullScreen();
+    }
+    /* end patch */
 }
 
 void UBPlatformUtils::showOSK(bool show)
